home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 1995 #5 & #6 / Amiga Plus CD - 1995 - No. 5 and 6.iso / tex / mf / inputs / dc / dxpunct.mf < prev    next >
Text File  |  1994-04-12  |  10KB  |  308 lines

  1. % This is DXPUNCT.MF in text format, as of March 24, 1992
  2. %
  3. % DC fonts Version 1.1 (prerelease of EC fonts)
  4. %
  5. %          [ heavily borrowed from the Computer Modern Roman family of
  6. %            fonts by D. E. Knuth ]
  7. %
  8. % Content:
  9. %
  10. %  punctuation
  11. %
  12.  
  13.  
  14. dcchar "guillemets (right)";
  15. beginchar(oct"017",8u#,asc_height#,0);
  16. italcorr h#*slant-u#;
  17. adjust_fit(0,0);
  18. pickup tiny.nib;
  19. numeric distance,thickness;
  20. thickness=hround(.5[cap_curve,hair]);
  21. distance=hround(max(4u,thickness+1.5u));
  22. pos1(hair,180);
  23. pos2(thickness,180);
  24. pos3(hair,180);
  25. lft x1r=lft x3r=hround(1.7u+eps);
  26. x2l=hround(w-1.7u-eps); %
  27. bot y1=vair;
  28. % y1-y2=y3-y1; % y1-y3=spread;
  29. y2=.5[y1,y3]=bar_height; % math_axis;
  30. filldraw stroke z1e--z2e--z3e;
  31. %filldraw stroke (z1e--z2e--z3e) shifted (-distance,0); % diagonals
  32. labels(1,2,3); endchar;
  33.  
  34.  
  35. dcchar "guillemet left";
  36. compute_spread(5/4x_height#,3/2x_height#);
  37. beginchar(oct"016",8u#,v_center(spread#+rule_thickness#));
  38. italcorr h#*slant-u#;
  39. adjust_fit(0,0);
  40. pickup tiny.nib;
  41. numeric distance,thickness;
  42. thickness=hround(.5[cap_curve,hair]);
  43. distance=hround(max(4u,thickness+1.5u));
  44. pos1(hair,0);
  45. pos2(thickness,0);
  46. pos3(hair,0);
  47. lft x2l=hround 1.7u-eps; x1=x3=w-x2;
  48. bot y1=vair;
  49. % y1-y2=y3-y1; % y1-y3=spread;
  50. y2=.5[y1,y3]=bar_height; % math_axis;
  51. filldraw stroke z1e--z2e--z3e;
  52. labels(1,2,3); endchar;
  53.  
  54. dcchar "guillemets left";
  55. compute_spread(5/4x_height#,3/2x_height#);
  56. beginchar(oct"023",12u#,v_center(spread#+rule_thickness#));
  57. italcorr h#*slant-u#;
  58. adjust_fit(0,0);
  59. pickup tiny.nib;
  60. numeric distance,thickness;
  61. thickness=hround(.5[cap_curve,hair]);
  62. distance=hround(max(4u,thickness+1.5u));
  63. pos1(hair,0);
  64. pos2(thickness,0);
  65. pos3(hair,0);
  66. lft x2l=hround 1.7u-eps; x1=x3=w-x2-distance;
  67. bot y1=vair;
  68. % y1-y2=y3-y1; % y1-y3=spread;
  69. y2=.5[y1,y3]=bar_height; % math_axis;
  70. filldraw stroke z1e--z2e--z3e;
  71. filldraw stroke (z1e--z2e--z3e) shifted (distance,0); % diagonals
  72. labels(1,2,3); endchar;
  73.  
  74.  
  75. dcchar "guillemets (right)";
  76. beginchar(oct"024",12u#,asc_height#,0);
  77. italcorr h#*slant-u#;
  78. adjust_fit(0,0);
  79. pickup tiny.nib;
  80. numeric distance,thickness;
  81. thickness=hround(.5[cap_curve,hair]);
  82. distance=hround(max(4u,thickness+1.5u));
  83. pos1(hair,180);
  84. pos2(thickness,180);
  85. pos3(hair,180);
  86. lft x1r=lft x3r=hround(distance+1.7u+eps);
  87. x2l=hround(w-1.7u-eps); %  x1=x3=x2-distance;
  88. bot y1=vair;
  89. % y1-y2=y3-y1; % y1-y3=spread;
  90. y2=.5[y1,y3]=bar_height; % math_axis;
  91. filldraw stroke z1e--z2e--z3e;
  92. filldraw stroke (z1e--z2e--z3e) shifted (-distance,0); % diagonals
  93. labels(1,2,3); endchar;
  94.  
  95.  
  96.  
  97. dcchar "German opening comma";
  98. numeric dot_diam#; dot_diam#=if monospace: 5/4 fi\\ dot_size#;
  99. define_whole_blacker_pixels(dot_diam);
  100. beginchar(oct"015",5u#,dot_diam#,comma_depth#);
  101. adjust_fit(0,0);
  102. x1+.5dot_diam=hround(w-.5dot_diam); y1-.5dot_diam=0;
  103. comma(1,a,dot_diam,.2u,comma_depth);  % dot and tail
  104. penlabels(1); endchar;
  105.  
  106. dcchar "German Opening quotes";
  107. beginchar(oct"022",7u#+max(2u#,dot_size#),asc_height#,0);
  108. italcorr asc_height#*slant+dot_size#-4.1u#;
  109. adjust_fit(0,0);
  110. x2-.5dot_size=w-hround 3u; y2-.5dot_size=0;
  111. x2-x1=hround(1.5u+max(2u,dot_size)); y2=y1;
  112. comma(1,a,dot_size,.25u,comma_depth); % left dot and tail
  113. comma(2,b,dot_size,.25u,comma_depth); % right dot and tail
  114. penlabels(1,2); endchar;
  115.  
  116. dcchar "Exclamation point";
  117. beginchar("!",5u#+width_adj#,asc_height#,0);
  118. italcorr asc_height#*slant-2u#-.5width_adj#+.5dot_size#;
  119. adjust_fit(0,0);
  120. pickup tiny.nib; pos3(dot_size,0); pos4(dot_size,90);
  121. lft x3l=hround(.5w-.5dot_size); bot y4l=0; z3=z4; dot(3,4);  % dot
  122. numeric bot_width;
  123. bot_width=if hefty:max(hround .8dot_size,fine.breadth) else: hair fi;
  124. pickup fine.nib; pos1(dot_size,0); pos2(bot_width,0);
  125. x1=x2=x3; bot y2=.25[top y4r,x_height]+1;
  126. if square_dots: top y1=h;
  127.  filldraw stroke z1e--z2e;  % stem
  128. else: top z0=(x1,h+o); y1+.5dot_size=h+o;
  129.  filldraw z1r...z0...z1l---z2l--z2r---cycle; fi  % stem and bulb
  130. penlabels(0,1,2,3,4); endchar;
  131.  
  132.  
  133.  
  134. dcchar "Apostrophe";
  135. beginchar("'",5u#,asc_height#,0);
  136. italcorr asc_height#*slant+.5dot_size#-2u#;
  137. adjust_fit(0,0);
  138. x1-.5dot_size=hround(.5w-.5dot_size); y1+.5dot_size=h;
  139. if monospace: comma(1,a,dot_size,.28u,vround 1.5comma_depth);  % large comma
  140. else: comma(1,a,dot_size,.25u,comma_depth); fi  % comma with increased jut
  141. penlabels(1); endchar;
  142.  
  143.  
  144. dcchar "Asterisk";
  145. beginchar("*",9u#,
  146.   if low_asterisk:math_axis#+.5x_height# else: body_height# fi,0);
  147. italcorr h#*slant-.75u#;
  148. adjust_fit(0,0);
  149. numeric ast_flare; ast_flare=hround .7[thin_join,stem];
  150. x0=.5w; y0=h-.5x_height;
  151. for d=-150 step 60 until 150: z[d]=z0+.5dir d xscaled 7.5u yscaled x_height;
  152.  numeric theta; theta=angle(z[d]-z0);
  153.  fill z0+.5(0,-thin_join)rotated theta
  154.   ---z[d]+.5(-ast_flare,-ast_flare)rotated theta
  155.   ..z[d]..z[d]+.5(-ast_flare,ast_flare)rotated theta
  156.   ---z0+.5(0,thin_join)rotated theta--cycle; endfor  % diagonal at angle |d|
  157. labels(0,[-150],[-90],[-30],30,90,150); endchar;
  158.  
  159. dcchar "Plus sign";
  160. beginarithchar("+"); pickup extra_rule.nib;
  161. x1=x2=good.x .5w; top y1=h+eps; .5[y1,y2]=math_axis;
  162. lft x3=hround u-eps; x4=w-x3; y3=y4=math_axis;
  163. draw z1--z2;  % stem
  164. draw z3--z4;  % crossbar
  165. labels(1,2,3,4); endchar;
  166.  
  167. dcchar "Comma";
  168. numeric dot_diam#; dot_diam#=if monospace: 5/4 fi\\ dot_size#;
  169. define_whole_blacker_pixels(dot_diam);
  170. beginchar(",",5u#,dot_diam#,comma_depth#);
  171. adjust_fit(0,0);
  172. x1-.5dot_diam=hround(.5w-.5dot_diam); y1-.5dot_diam=0;
  173. comma(1,a,dot_diam,.2u,comma_depth);  % dot and tail
  174. penlabels(1); endchar;
  175.  
  176. dcchar "Period";
  177. numeric dot_diam#; dot_diam#=if monospace: 5/4 fi\\ dot_size#;
  178. define_whole_blacker_pixels(dot_diam);
  179. beginchar(".",5u#,dot_diam#,0);
  180. adjust_fit(0,0); pickup fine.nib;
  181. pos1(dot_diam,0); pos2(dot_diam,90);
  182. lft x1l=hround(.5w-.5dot_diam); bot y2l=0; z1=z2; dot(1,2);  % dot
  183. penlabels(1,2); endchar;
  184.  
  185. dcchar "Virgule (slash)";
  186. beginchar("/",9u#,body_height#,paren_depth#);
  187. italcorr body_height#*slant-.5u#;
  188. adjust_fit(0,0); pickup extra_rule.nib;
  189. rt x1=hround(w-u)+eps; top y1=h+eps;
  190. lft x2=hround u-eps; bot y2=-d-eps;
  191. draw z1--z2;  % diagonal
  192. penlabels(1,2); endchar;
  193.  
  194. dcchar "Colon";
  195. numeric dot_diam#; dot_diam#=if monospace: 5/4 fi\\ dot_size#;
  196. define_whole_blacker_pixels(dot_diam);
  197. beginchar(":",5u#,x_height#,0);
  198. italcorr x_height#*slant+.5dot_diam#-2u#;
  199. adjust_fit(0,0); pickup fine.nib;
  200. pos1(dot_diam,0); pos2(dot_diam,90);
  201. lft x1l=hround(.5w-.5dot_diam); top y2r=h; z1=z2; dot(1,2);  % upper dot
  202. pos3(dot_diam,0); pos4(dot_diam,90);
  203. x3=x1; bot y4l=0; z3=z4; dot(3,4);  % lower dot
  204. penlabels(1,2,3,4); endchar;
  205.  
  206. dcchar "Semicolon";
  207. numeric dot_diam#; dot_diam#=if monospace: 5/4 fi\\ dot_size#;
  208. define_whole_blacker_pixels(dot_diam);
  209. beginchar(";",5u#,x_height#,comma_depth#);
  210. italcorr x_height#*slant+.5dot_diam#-2u#;
  211. adjust_fit(0,0); pickup fine.nib;
  212. pos1(dot_diam,0); pos2(dot_diam,90);
  213. lft x1l=hround(.5w-.5dot_diam); top y2r=h; z1=z2; dot(1,2);  % upper dot
  214. x3-.5dot_diam=hround(.5w-.5dot_diam); y3-.5dot_diam=0;
  215. comma(3,a,dot_diam,.05u,comma_depth);  % lower dot and tail
  216. penlabels(1,2,3); endchar;
  217.  
  218. dcchar "Equals sign";
  219. compute_spread(.45x_height#,.55x_height#);
  220. beginchar("=",14u#,v_center(spread#+rule_thickness#));
  221. italcorr h#*slant-.5u#;
  222. adjust_fit(0,0); pickup extra_rule.nib;
  223. lft x1=hround u-eps; x3=x1; x2=x4=w-x1;
  224. y1=y2; y3=y4; y1-y3=spread; .5[y1,y3]=math_axis;
  225. draw z1--z2;  % upper bar
  226. draw z3--z4;  % lower bar
  227. labels(1,2,3,4); endchar;
  228.  
  229.  
  230.  
  231. dcchar "Reverse apostrophe";
  232. beginchar("`",5u#,asc_height#,0);
  233. italcorr asc_height#*slant+.5dot_size#-2u#;
  234. adjust_fit(0,0);
  235. x1-.5dot_size=hround(.5w-.5dot_size); y1+.5dot_size=h-comma_depth;
  236. if monospace: ammoc(1,a,dot_size,.28u,vround 1.5comma_depth);  % large ammoc
  237. else: ammoc(1,a,dot_size,.25u,comma_depth); fi  % normal ammoc
  238. penlabels(1); endchar;
  239.  
  240.  
  241. dcchar "Spanish open exclamation point";
  242. beginchar(oct"275",5u#+width_adj#,asc_height#-desc_depth#,desc_depth#);
  243. italcorr h#*slant-2u#-.5width_adj#+.5dot_size#;
  244. adjust_fit(0,0);
  245. pickup tiny.nib; pos3(dot_size,0); pos4(dot_size,90);
  246. lft x3l=hround(.5w-.5dot_size); top y4r=h; z3=z4; dot(3,4);  % dot
  247. numeric top_width;
  248. top_width=if hefty:max(hround .8dot_size,fine.breadth) else: hair fi;
  249. pickup fine.nib; pos1(dot_size,0); pos2(top_width,0);
  250. x1=x2=x3; top y2=.25[bot y4l,h-x_height]-1;
  251. if square_dots: bot y1=-d;
  252.  filldraw stroke z1e--z2e;  % stem
  253. else: bot z0=(x1,-d-o); y1-.5dot_size=-d-o;
  254.  filldraw z1l...z0...z1r---z2r--z2l---cycle; fi  % stem and bulb
  255. penlabels(0,1,2,3,4); endchar;
  256.  
  257.  
  258. dcchar "Closing quotes";
  259. beginchar(oct"021",7u#+max(2u#,dot_size#),asc_height#,0);
  260. italcorr asc_height#*slant+dot_size#-4.1u#;
  261. adjust_fit(0,0);
  262. x1-.5dot_size=hround .6u; y2+.5dot_size=h;
  263. x2-x1=hround(1.5u+max(2u,dot_size)); y2=y1;
  264. comma(1,a,dot_size,.25u,comma_depth); % left dot and tail
  265. comma(2,b,dot_size,.25u,comma_depth); % right dot and tail
  266. penlabels(1,2); endchar;
  267.  
  268. dcchar "Hyphen";
  269. beginchar("-",6u#,x_height#,0);
  270. italcorr .5x_height#*slant-.5u#;
  271. adjust_fit(0,0);
  272. numeric thickness; thickness=if hefty:bar else:.75[hair,stem] fi;
  273. pickup crisp.nib; pos1(thickness,90); pos2(thickness,90);
  274. top y1r=top y2r=vround(.5h+.5thickness); rt x2=hround(w-u)+eps;
  275. if monospace: x2=w-x1 else: lft x1=hround .2u-eps fi;
  276. filldraw stroke z1e--z2e;  % bar
  277. penlabels(1,2); endchar;
  278.  
  279. dcchar "Opening quotes";
  280. beginchar(oct"20",7u#+max(2u#,dot_size#),asc_height#,0);
  281. italcorr asc_height#*slant-.1u#;
  282. adjust_fit(0,0);
  283. x2+.5dot_size=hround(w-.6u); y1+.5dot_size=h-comma_depth;
  284. x2-x1=hround(1.5u+max(2u,dot_size)); y2=y1;
  285. ammoc(1,a,dot_size,.25u,comma_depth); % left dot and tail
  286. ammoc(2,b,dot_size,.25u,comma_depth); % right dot and tail
  287. penlabels(1,2); endchar;
  288.  
  289. dcchar "En dash";
  290. beginchar(oct"025",9u#,x_height#,0);
  291. italcorr .61803x_height#*slant+.5u#;
  292. adjust_fit(0,0);
  293. pickup crisp.nib; pos1(vair,90); pos2(vair,90);
  294. top y1r=top y2r=vround(.61803h+.5vair); lft x1=-eps; rt x2=w+eps;
  295. filldraw stroke z1e--z2e;  % bar
  296. penlabels(1,2); endchar;
  297.  
  298. dcchar "Em dash";
  299. beginchar(oct"026",18u#,x_height#,0);
  300. italcorr .61803x_height#*slant+.5u#;
  301. adjust_fit(letter_fit#,letter_fit#);
  302. pickup crisp.nib; pos1(vair,90); pos2(vair,90);
  303. top y1r=top y2r=vround(.61803h+.5vair); lft x1=-eps; rt x2=w+eps;
  304. filldraw stroke z1e--z2e;  % bar
  305. penlabels(1,2); endchar;
  306.  
  307. endinput;
  308.